/**
 * 封装请求，并对请求进行拦截，添加token
 */
import axios from 'axios'
// 设置axios拦截, config 是请求对象
axios.interceptors.request.use(function (config) {
  // config表示请求对象
  // console.log('config', config)
  // 获取token
  let mytoken = localStorage.getItem('mytoken')
  // console.log(mytoken)
  if (mytoken) {
    // 约定请求头名称为 Authorization
    config.headers.Authorization = mytoken
  }
  // 请求对象必须return回去
  return config
}, function (error) {
  // 出错处理
  return Promise.reject(error)
})

/**
 * 设置axios基准路径，会在每次请求之前拼接加上基准路径 'http://localhost:8888/api/private/v1/'
 * 由于前端发送请求的是8080端口，而服务器的端口是8888，所有存在跨域
 * 此处使用代理服务器的方式解决跨域问题，即配置 vue.config.js 文件转发请求
 */
axios.defaults.baseURL = '/api/private/v1/'

// es6写法，将post方法执行完毕之后返回的promise对象返回出去
// 登录api
export const login = obj => axios.post('login', obj)

// 获取用户数据
export const getUsers = obj => axios.get('users', { params: obj })
// 修改用户状态
export const changeState = (uid, state) => axios.put(`users/${uid}/state/${state}`)
// 确认添加用户
export const addUser = obj => axios.post('users', obj)
// 确认修改用户信息
export const editUser = obj => axios.put(`users/${obj.id}`, obj)
// 删除用户
export const deleteUser = id => axios.delete(`users/${id}`)
// 获取用户角色列表
export const getRoles = () => axios.get('roles')
// 确认分配角色
export const confirmUserRole = (id, rid) => axios.put(`users/${id}/role`, { rid: rid })

// 获取用户权限， type="list" / "tree"
export const getRights = type => axios.get(`rights/${type}`)
// 删除角色指定权限
export const deleteRoleRight = (roleId, rightId) => axios.delete(`roles/${roleId}/rights/${rightId}`)
// 添加角色
export const addRole = obj => axios.post('roles', obj)
// 删除角色
export const deleteRole = id => axios.delete(`roles/${id}`)
// 编辑提交角色
export const editRole = obj => axios.put(`roles/${obj.id}`, obj)
// 角色授权， rids要求是逗号隔开的字符串
export const comfirmRoleRight = (roleId, rids) => axios.post(`roles/${roleId}/rights`, { rids: rids })

// 获取左侧菜单列表
export const getMenus = () => axios.get('menus')

// 获取商品数据列表, 如果不传pagesize和pagenum则获取商品分类
export const getCategories = (type, pagesize, pagenum) => axios.get(`categories`, { params: { type, pagesize, pagenum } })
// 提交新商品分类
export const addCategories = obj => axios.post(`categories`, obj)
// 删除分类
export const deleteCategories = id => axios.delete(`categories/${id}`)
// 编辑提交分类
export const editCategories = obj => axios.put(`categories/${obj.cat_id}`, obj)
// 根据id查询分类
export const getCategoriesById = id => axios.get(`categories/${id}`)

// 获取报告饼状图, 无此api  not found
// export const getPieReport = type => axios.get(`reports/${type}`)
